#include <stdio.h>
#include <stdlib.h>

int min(int a,int b) {
    return a<b ? a : b;
}
/* 解法1：递推 */
int solve(int n) {
    if(n<=3) return n;
    else if(n%2==0) return solve(n/2)+1;
    else return min(solve(n+1)+1,solve(n-1)+1);
}
/* 解法2：动态规划 */
int dp_solve(int n) {
    int dp[n+1];
    /* 初始化 */
    for(int i=0;i<=n;i++)
        dp[i]=i;
    /* 状态转移 */
    for(int i=1;i<=n;i++) {
        if(i%2)
            dp[i]=min(min(dp[i-1]+1,dp[(i+1)/2]+2),dp[i]);
        else
            dp[i]=min(min(dp[i-1]+1,dp[i]),dp[i/2]+1);
    }
    return dp[n];
}
int main() {
    int n;
    scanf("%d",&n);
    n=abs(n);
    printf("%d\n",dp_solve(n));
    return 0;
}